<?php
declare (strict_types = 1);

namespace app\admin\controller;

use app\BaseController;
use app\common\lib\Show;
use think\facade\Request;
use app\common\business\SpecsValue as BusiSpecsValue;

class SpecsValue extends BaseController
{
    /**
     * 根据规格 ID 获取所有规格属性
     *
     * @return \think\response\Json
     */
    public function getBySpecsId()
    {
        $specsid = Request::param('specs_id', 0, 'intval');
        if (!$specsid) {
            return Show::error('数据为空');
        }
        $busiSpecsValue = new BusiSpecsValue();
        $result = $busiSpecsValue->getBySpecsId($specsid);
        return Show::success($result);
    }

    /**
     * 商品规格属性添加
     *
     * @return \think\response\Json
     */
    public function save()
    {
        $data = [
            'specs_id' => Request::param('specs_id', 0, 'intval'),
            'name'     => Request::param('name', '', 'trim')
        ];

        $validate = new \app\admin\validate\SpecsValue();
        if (!$validate->check($data)) {
            return Show::error($validate->getError());
        }

        try{
            $busiSpecsValue = new BusiSpecsValue();
            $id = $busiSpecsValue->add($data);
        } catch (\Exception $e) {
            return Show::error($e->getMessage());
        }

        return $id ? Show::success(['id' => $id]) : Show::error('新增失败');
    }

    /**
     * 商品规格属性删除
     *
     * @return \think\response\Json
     */
    public function delete()
    {
        // 获取待删除属性 ID
        $specs_value_id = Request::param('specs_value_id', 0, 'intval');

        // 判断当前属性是否有效
        if (!$specs_value_id) {
            return Show::error('属性删除信息错误');
        }

        // 删除规格属性部分
        $busiSpecsValue = new BusiSpecsValue();
        $res = $busiSpecsValue->deleteBySpecsValueId($specs_value_id);

        return $res ? Show::success() : Show::error('删除失败');
    }
}
